package org.sdp.pearproject.dao.domain;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * InterfaceName: ProjectForMenuMenuExample
 * @Description:
 * @Author: SDP
 * @Date: 2022-07-21
 * @Version: 1.0
 * Table: pear_project
 * Comment:
 * 项目表
 */
public class ProjectForMenuMenuExample extends BaseExample {
    protected Integer limitClause;

    protected Integer countClause;

    protected Integer topClause;

    protected ProjectForMenuMenu simple;

    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public ProjectForMenuMenuExample() {
        oredCriteria = new ArrayList<>();
        simple = new ProjectForMenuMenu();
    }

    public void setLimitClause(Integer limitClause) {
        this.limitClause = limitClause;
    }

    public Integer getLimitClause() {
        return limitClause;
    }

    public void setCountClause(Integer countClause) {
        this.countClause = countClause;
    }

    public Integer getCountClause() {
        return countClause;
    }

    public void setTopClause(Integer topClause) {
        this.topClause = topClause;
    }

    public Integer getTopClause() {
        return topClause;
    }

    public void setSimple(ProjectForMenuMenu simple) {
        this.simple = simple;
    }

    public ProjectForMenuMenu getSimple() {
        return simple;
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    public static ProjectForMenuMenuExample createExample(ProjectForMenuMenu request) throws Exception {
        return createExample(request, null);
    }

    public static ProjectForMenuMenuExample createExample(ProjectForMenuMenu request, JSONObject options) throws Exception {
        ProjectForMenuMenuExample example = new ProjectForMenuMenuExample();
        example.setSimple(request);
        ProjectForMenuMenuExample.Criteria criteria = example.createCriteria();

        example.fixExample(ProjectForMenuMenu.class, CriteriaString.class, criteria, options);

        if (options != null) {
            String orderBy = "";
            if (options.containsKey("order_by")) {
                orderBy = setCriteriaOrderBy(options.getJSONArray("order_by"), example);
                if (orderBy.length() > 0) {
                    example.setOrderByClause(orderBy);
                }
            }
        }

        return example;
    }

    private static String setCriteriaOrderBy(JSONArray jsonArray, ProjectForMenuMenuExample example) throws Exception {
        List<Object> request = Criterion.toList(jsonArray, CriteriaString.class);
        StringBuilder sb = new StringBuilder();
        int count = 0;
        for(int i = 0; i < request.size(); i++) {
            Object criteriaOrderByObj  = request.get(i);
            CriteriaString criteriaOrderBy = (CriteriaString)criteriaOrderByObj;
            int subCount = 0;

            subCount += appendCriteriaOrderByItem(sb, "id", criteriaOrderBy.getId());
            subCount += appendCriteriaOrderByItem(sb, "pid", criteriaOrderBy.getPid());
            subCount += appendCriteriaOrderByItem(sb, "title", criteriaOrderBy.getTitle());
            subCount += appendCriteriaOrderByItem(sb, "icon", criteriaOrderBy.getIcon());
            subCount += appendCriteriaOrderByItem(sb, "url", criteriaOrderBy.getUrl());
            subCount += appendCriteriaOrderByItem(sb, "file_path", criteriaOrderBy.getFilePath());
            subCount += appendCriteriaOrderByItem(sb, "params", criteriaOrderBy.getParams());
            subCount += appendCriteriaOrderByItem(sb, "node", criteriaOrderBy.getNode());
            subCount += appendCriteriaOrderByItem(sb, "sort", criteriaOrderBy.getSort());
            subCount += appendCriteriaOrderByItem(sb, "`status`", criteriaOrderBy.getStatus());
            subCount += appendCriteriaOrderByItem(sb, "create_by", criteriaOrderBy.getCreateBy());
            subCount += appendCriteriaOrderByItem(sb, "create_at", criteriaOrderBy.getCreateAt());
            subCount += appendCriteriaOrderByItem(sb, "is_inner", criteriaOrderBy.getIsInner());
            subCount += appendCriteriaOrderByItem(sb, "`values`", criteriaOrderBy.getValues());
            subCount += appendCriteriaOrderByItem(sb, "show_slider", criteriaOrderBy.getShowSlider());
            subCount += appendCriteriaOrderByItem(sb, "full_url", criteriaOrderBy.getFullUrl());
            if (subCount > 1) {
                throw new Exception("order by数组元素对象属性多于1个(ProjectForMenuMenuExample):"+count+","+JSON.toJSONString(jsonArray.get(i)));
            }
            if (subCount == 0 && !"{}".equals(JSON.toJSONString(jsonArray.get(i)))) {
                throw new Exception("存在非法order by 字段(ProjectForMenuMenuExample):"+count+","+JSON.toJSONString(jsonArray.get(i)));
            }
            count++;
        }
        if (sb.length() == 0) {
            appendCriteriaOrderByItem(sb, "1", "");
        }

        return sb.toString();
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andIdIsNull() {
            addCriterion("id is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("id is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(Long value) {
            addCriterion("id =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(Long value) {
            addCriterion("id <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(Long value) {
            addCriterion("id >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(Long value) {
            addCriterion("id >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(Long value) {
            addCriterion("id <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(Long value) {
            addCriterion("id <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<Long> values) {
            addCriterion("id in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<Long> values) {
            addCriterion("id not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(Long value1, Long value2) {
            addCriterion("id between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(Long value1, Long value2) {
            addCriterion("id not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andPidIsNull() {
            addCriterion("pid is null");
            return (Criteria) this;
        }

        public Criteria andPidIsNotNull() {
            addCriterion("pid is not null");
            return (Criteria) this;
        }

        public Criteria andPidEqualTo(Long value) {
            addCriterion("pid =", value, "pid");
            return (Criteria) this;
        }

        public Criteria andPidNotEqualTo(Long value) {
            addCriterion("pid <>", value, "pid");
            return (Criteria) this;
        }

        public Criteria andPidGreaterThan(Long value) {
            addCriterion("pid >", value, "pid");
            return (Criteria) this;
        }

        public Criteria andPidGreaterThanOrEqualTo(Long value) {
            addCriterion("pid >=", value, "pid");
            return (Criteria) this;
        }

        public Criteria andPidLessThan(Long value) {
            addCriterion("pid <", value, "pid");
            return (Criteria) this;
        }

        public Criteria andPidLessThanOrEqualTo(Long value) {
            addCriterion("pid <=", value, "pid");
            return (Criteria) this;
        }

        public Criteria andPidIn(List<Long> values) {
            addCriterion("pid in", values, "pid");
            return (Criteria) this;
        }

        public Criteria andPidNotIn(List<Long> values) {
            addCriterion("pid not in", values, "pid");
            return (Criteria) this;
        }

        public Criteria andPidBetween(Long value1, Long value2) {
            addCriterion("pid between", value1, value2, "pid");
            return (Criteria) this;
        }

        public Criteria andPidNotBetween(Long value1, Long value2) {
            addCriterion("pid not between", value1, value2, "pid");
            return (Criteria) this;
        }

        public Criteria andTitleIsNull() {
            addCriterion("title is null");
            return (Criteria) this;
        }

        public Criteria andTitleIsNotNull() {
            addCriterion("title is not null");
            return (Criteria) this;
        }

        public Criteria andTitleEqualTo(String value) {
            addCriterion("title =", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleNotEqualTo(String value) {
            addCriterion("title <>", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleGreaterThan(String value) {
            addCriterion("title >", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleGreaterThanOrEqualTo(String value) {
            addCriterion("title >=", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleLessThan(String value) {
            addCriterion("title <", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleLessThanOrEqualTo(String value) {
            addCriterion("title <=", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleRegexp(String value) {
            addCriterion("title regexp", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleLike(String value) {
            addCriterion("title like", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleNotLike(String value) {
            addCriterion("title not like", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleIn(List<String> values) {
            addCriterion("title in", values, "title");
            return (Criteria) this;
        }

        public Criteria andTitleNotIn(List<String> values) {
            addCriterion("title not in", values, "title");
            return (Criteria) this;
        }

        public Criteria andTitleBetween(String value1, String value2) {
            addCriterion("title between", value1, value2, "title");
            return (Criteria) this;
        }

        public Criteria andTitleNotBetween(String value1, String value2) {
            addCriterion("title not between", value1, value2, "title");
            return (Criteria) this;
        }

        public Criteria andIconIsNull() {
            addCriterion("icon is null");
            return (Criteria) this;
        }

        public Criteria andIconIsNotNull() {
            addCriterion("icon is not null");
            return (Criteria) this;
        }

        public Criteria andIconEqualTo(String value) {
            addCriterion("icon =", value, "icon");
            return (Criteria) this;
        }

        public Criteria andIconNotEqualTo(String value) {
            addCriterion("icon <>", value, "icon");
            return (Criteria) this;
        }

        public Criteria andIconGreaterThan(String value) {
            addCriterion("icon >", value, "icon");
            return (Criteria) this;
        }

        public Criteria andIconGreaterThanOrEqualTo(String value) {
            addCriterion("icon >=", value, "icon");
            return (Criteria) this;
        }

        public Criteria andIconLessThan(String value) {
            addCriterion("icon <", value, "icon");
            return (Criteria) this;
        }

        public Criteria andIconLessThanOrEqualTo(String value) {
            addCriterion("icon <=", value, "icon");
            return (Criteria) this;
        }

        public Criteria andIconRegexp(String value) {
            addCriterion("icon regexp", value, "icon");
            return (Criteria) this;
        }

        public Criteria andIconLike(String value) {
            addCriterion("icon like", value, "icon");
            return (Criteria) this;
        }

        public Criteria andIconNotLike(String value) {
            addCriterion("icon not like", value, "icon");
            return (Criteria) this;
        }

        public Criteria andIconIn(List<String> values) {
            addCriterion("icon in", values, "icon");
            return (Criteria) this;
        }

        public Criteria andIconNotIn(List<String> values) {
            addCriterion("icon not in", values, "icon");
            return (Criteria) this;
        }

        public Criteria andIconBetween(String value1, String value2) {
            addCriterion("icon between", value1, value2, "icon");
            return (Criteria) this;
        }

        public Criteria andIconNotBetween(String value1, String value2) {
            addCriterion("icon not between", value1, value2, "icon");
            return (Criteria) this;
        }

        public Criteria andUrlIsNull() {
            addCriterion("url is null");
            return (Criteria) this;
        }

        public Criteria andUrlIsNotNull() {
            addCriterion("url is not null");
            return (Criteria) this;
        }

        public Criteria andUrlEqualTo(String value) {
            addCriterion("url =", value, "url");
            return (Criteria) this;
        }

        public Criteria andUrlNotEqualTo(String value) {
            addCriterion("url <>", value, "url");
            return (Criteria) this;
        }

        public Criteria andUrlGreaterThan(String value) {
            addCriterion("url >", value, "url");
            return (Criteria) this;
        }

        public Criteria andUrlGreaterThanOrEqualTo(String value) {
            addCriterion("url >=", value, "url");
            return (Criteria) this;
        }

        public Criteria andUrlLessThan(String value) {
            addCriterion("url <", value, "url");
            return (Criteria) this;
        }

        public Criteria andUrlLessThanOrEqualTo(String value) {
            addCriterion("url <=", value, "url");
            return (Criteria) this;
        }

        public Criteria andUrlRegexp(String value) {
            addCriterion("url regexp", value, "url");
            return (Criteria) this;
        }

        public Criteria andUrlLike(String value) {
            addCriterion("url like", value, "url");
            return (Criteria) this;
        }

        public Criteria andUrlNotLike(String value) {
            addCriterion("url not like", value, "url");
            return (Criteria) this;
        }

        public Criteria andUrlIn(List<String> values) {
            addCriterion("url in", values, "url");
            return (Criteria) this;
        }

        public Criteria andUrlNotIn(List<String> values) {
            addCriterion("url not in", values, "url");
            return (Criteria) this;
        }

        public Criteria andUrlBetween(String value1, String value2) {
            addCriterion("url between", value1, value2, "url");
            return (Criteria) this;
        }

        public Criteria andUrlNotBetween(String value1, String value2) {
            addCriterion("url not between", value1, value2, "url");
            return (Criteria) this;
        }

        public Criteria andFilePathIsNull() {
            addCriterion("file_path is null");
            return (Criteria) this;
        }

        public Criteria andFilePathIsNotNull() {
            addCriterion("file_path is not null");
            return (Criteria) this;
        }

        public Criteria andFilePathEqualTo(String value) {
            addCriterion("file_path =", value, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathNotEqualTo(String value) {
            addCriterion("file_path <>", value, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathGreaterThan(String value) {
            addCriterion("file_path >", value, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathGreaterThanOrEqualTo(String value) {
            addCriterion("file_path >=", value, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathLessThan(String value) {
            addCriterion("file_path <", value, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathLessThanOrEqualTo(String value) {
            addCriterion("file_path <=", value, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathRegexp(String value) {
            addCriterion("file_path regexp", value, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathLike(String value) {
            addCriterion("file_path like", value, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathNotLike(String value) {
            addCriterion("file_path not like", value, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathIn(List<String> values) {
            addCriterion("file_path in", values, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathNotIn(List<String> values) {
            addCriterion("file_path not in", values, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathBetween(String value1, String value2) {
            addCriterion("file_path between", value1, value2, "filePath");
            return (Criteria) this;
        }

        public Criteria andFilePathNotBetween(String value1, String value2) {
            addCriterion("file_path not between", value1, value2, "filePath");
            return (Criteria) this;
        }

        public Criteria andParamsIsNull() {
            addCriterion("params is null");
            return (Criteria) this;
        }

        public Criteria andParamsIsNotNull() {
            addCriterion("params is not null");
            return (Criteria) this;
        }

        public Criteria andParamsEqualTo(String value) {
            addCriterion("params =", value, "params");
            return (Criteria) this;
        }

        public Criteria andParamsNotEqualTo(String value) {
            addCriterion("params <>", value, "params");
            return (Criteria) this;
        }

        public Criteria andParamsGreaterThan(String value) {
            addCriterion("params >", value, "params");
            return (Criteria) this;
        }

        public Criteria andParamsGreaterThanOrEqualTo(String value) {
            addCriterion("params >=", value, "params");
            return (Criteria) this;
        }

        public Criteria andParamsLessThan(String value) {
            addCriterion("params <", value, "params");
            return (Criteria) this;
        }

        public Criteria andParamsLessThanOrEqualTo(String value) {
            addCriterion("params <=", value, "params");
            return (Criteria) this;
        }

        public Criteria andParamsRegexp(String value) {
            addCriterion("params regexp", value, "params");
            return (Criteria) this;
        }

        public Criteria andParamsLike(String value) {
            addCriterion("params like", value, "params");
            return (Criteria) this;
        }

        public Criteria andParamsNotLike(String value) {
            addCriterion("params not like", value, "params");
            return (Criteria) this;
        }

        public Criteria andParamsIn(List<String> values) {
            addCriterion("params in", values, "params");
            return (Criteria) this;
        }

        public Criteria andParamsNotIn(List<String> values) {
            addCriterion("params not in", values, "params");
            return (Criteria) this;
        }

        public Criteria andParamsBetween(String value1, String value2) {
            addCriterion("params between", value1, value2, "params");
            return (Criteria) this;
        }

        public Criteria andParamsNotBetween(String value1, String value2) {
            addCriterion("params not between", value1, value2, "params");
            return (Criteria) this;
        }

        public Criteria andNodeIsNull() {
            addCriterion("node is null");
            return (Criteria) this;
        }

        public Criteria andNodeIsNotNull() {
            addCriterion("node is not null");
            return (Criteria) this;
        }

        public Criteria andNodeEqualTo(String value) {
            addCriterion("node =", value, "node");
            return (Criteria) this;
        }

        public Criteria andNodeNotEqualTo(String value) {
            addCriterion("node <>", value, "node");
            return (Criteria) this;
        }

        public Criteria andNodeGreaterThan(String value) {
            addCriterion("node >", value, "node");
            return (Criteria) this;
        }

        public Criteria andNodeGreaterThanOrEqualTo(String value) {
            addCriterion("node >=", value, "node");
            return (Criteria) this;
        }

        public Criteria andNodeLessThan(String value) {
            addCriterion("node <", value, "node");
            return (Criteria) this;
        }

        public Criteria andNodeLessThanOrEqualTo(String value) {
            addCriterion("node <=", value, "node");
            return (Criteria) this;
        }

        public Criteria andNodeRegexp(String value) {
            addCriterion("node regexp", value, "node");
            return (Criteria) this;
        }

        public Criteria andNodeLike(String value) {
            addCriterion("node like", value, "node");
            return (Criteria) this;
        }

        public Criteria andNodeNotLike(String value) {
            addCriterion("node not like", value, "node");
            return (Criteria) this;
        }

        public Criteria andNodeIn(List<String> values) {
            addCriterion("node in", values, "node");
            return (Criteria) this;
        }

        public Criteria andNodeNotIn(List<String> values) {
            addCriterion("node not in", values, "node");
            return (Criteria) this;
        }

        public Criteria andNodeBetween(String value1, String value2) {
            addCriterion("node between", value1, value2, "node");
            return (Criteria) this;
        }

        public Criteria andNodeNotBetween(String value1, String value2) {
            addCriterion("node not between", value1, value2, "node");
            return (Criteria) this;
        }

        public Criteria andSortIsNull() {
            addCriterion("sort is null");
            return (Criteria) this;
        }

        public Criteria andSortIsNotNull() {
            addCriterion("sort is not null");
            return (Criteria) this;
        }

        public Criteria andSortEqualTo(Integer value) {
            addCriterion("sort =", value, "sort");
            return (Criteria) this;
        }

        public Criteria andSortNotEqualTo(Integer value) {
            addCriterion("sort <>", value, "sort");
            return (Criteria) this;
        }

        public Criteria andSortGreaterThan(Integer value) {
            addCriterion("sort >", value, "sort");
            return (Criteria) this;
        }

        public Criteria andSortGreaterThanOrEqualTo(Integer value) {
            addCriterion("sort >=", value, "sort");
            return (Criteria) this;
        }

        public Criteria andSortLessThan(Integer value) {
            addCriterion("sort <", value, "sort");
            return (Criteria) this;
        }

        public Criteria andSortLessThanOrEqualTo(Integer value) {
            addCriterion("sort <=", value, "sort");
            return (Criteria) this;
        }

        public Criteria andSortIn(List<Integer> values) {
            addCriterion("sort in", values, "sort");
            return (Criteria) this;
        }

        public Criteria andSortNotIn(List<Integer> values) {
            addCriterion("sort not in", values, "sort");
            return (Criteria) this;
        }

        public Criteria andSortBetween(Integer value1, Integer value2) {
            addCriterion("sort between", value1, value2, "sort");
            return (Criteria) this;
        }

        public Criteria andSortNotBetween(Integer value1, Integer value2) {
            addCriterion("sort not between", value1, value2, "sort");
            return (Criteria) this;
        }

        public Criteria andStatusIsNull() {
            addCriterion("`status` is null");
            return (Criteria) this;
        }

        public Criteria andStatusIsNotNull() {
            addCriterion("`status` is not null");
            return (Criteria) this;
        }

        public Criteria andStatusEqualTo(Integer value) {
            addCriterion("`status` =", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotEqualTo(Integer value) {
            addCriterion("`status` <>", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThan(Integer value) {
            addCriterion("`status` >", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("`status` >=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThan(Integer value) {
            addCriterion("`status` <", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThanOrEqualTo(Integer value) {
            addCriterion("`status` <=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusIn(List<Integer> values) {
            addCriterion("`status` in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotIn(List<Integer> values) {
            addCriterion("`status` not in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusBetween(Integer value1, Integer value2) {
            addCriterion("`status` between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("`status` not between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andCreateByIsNull() {
            addCriterion("create_by is null");
            return (Criteria) this;
        }

        public Criteria andCreateByIsNotNull() {
            addCriterion("create_by is not null");
            return (Criteria) this;
        }

        public Criteria andCreateByEqualTo(Long value) {
            addCriterion("create_by =", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByNotEqualTo(Long value) {
            addCriterion("create_by <>", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByGreaterThan(Long value) {
            addCriterion("create_by >", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByGreaterThanOrEqualTo(Long value) {
            addCriterion("create_by >=", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByLessThan(Long value) {
            addCriterion("create_by <", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByLessThanOrEqualTo(Long value) {
            addCriterion("create_by <=", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByIn(List<Long> values) {
            addCriterion("create_by in", values, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByNotIn(List<Long> values) {
            addCriterion("create_by not in", values, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByBetween(Long value1, Long value2) {
            addCriterion("create_by between", value1, value2, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByNotBetween(Long value1, Long value2) {
            addCriterion("create_by not between", value1, value2, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateAtIsNull() {
            addCriterion("create_at is null");
            return (Criteria) this;
        }

        public Criteria andCreateAtIsNotNull() {
            addCriterion("create_at is not null");
            return (Criteria) this;
        }

        public Criteria andCreateAtEqualTo(String value) {
            addCriterion("create_at =", value, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtNotEqualTo(String value) {
            addCriterion("create_at <>", value, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtGreaterThan(String value) {
            addCriterion("create_at >", value, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtGreaterThanOrEqualTo(String value) {
            addCriterion("create_at >=", value, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtLessThan(String value) {
            addCriterion("create_at <", value, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtLessThanOrEqualTo(String value) {
            addCriterion("create_at <=", value, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtRegexp(String value) {
            addCriterion("create_at regexp", value, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtLike(String value) {
            addCriterion("create_at like", value, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtNotLike(String value) {
            addCriterion("create_at not like", value, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtIn(List<String> values) {
            addCriterion("create_at in", values, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtNotIn(List<String> values) {
            addCriterion("create_at not in", values, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtBetween(String value1, String value2) {
            addCriterion("create_at between", value1, value2, "createAt");
            return (Criteria) this;
        }

        public Criteria andCreateAtNotBetween(String value1, String value2) {
            addCriterion("create_at not between", value1, value2, "createAt");
            return (Criteria) this;
        }

        public Criteria andIsInnerIsNull() {
            addCriterion("is_inner is null");
            return (Criteria) this;
        }

        public Criteria andIsInnerIsNotNull() {
            addCriterion("is_inner is not null");
            return (Criteria) this;
        }

        public Criteria andIsInnerEqualTo(Byte value) {
            addCriterion("is_inner =", value, "isInner");
            return (Criteria) this;
        }

        public Criteria andIsInnerNotEqualTo(Byte value) {
            addCriterion("is_inner <>", value, "isInner");
            return (Criteria) this;
        }

        public Criteria andIsInnerGreaterThan(Byte value) {
            addCriterion("is_inner >", value, "isInner");
            return (Criteria) this;
        }

        public Criteria andIsInnerGreaterThanOrEqualTo(Byte value) {
            addCriterion("is_inner >=", value, "isInner");
            return (Criteria) this;
        }

        public Criteria andIsInnerLessThan(Byte value) {
            addCriterion("is_inner <", value, "isInner");
            return (Criteria) this;
        }

        public Criteria andIsInnerLessThanOrEqualTo(Byte value) {
            addCriterion("is_inner <=", value, "isInner");
            return (Criteria) this;
        }

        public Criteria andIsInnerIn(List<Byte> values) {
            addCriterion("is_inner in", values, "isInner");
            return (Criteria) this;
        }

        public Criteria andIsInnerNotIn(List<Byte> values) {
            addCriterion("is_inner not in", values, "isInner");
            return (Criteria) this;
        }

        public Criteria andIsInnerBetween(Byte value1, Byte value2) {
            addCriterion("is_inner between", value1, value2, "isInner");
            return (Criteria) this;
        }

        public Criteria andIsInnerNotBetween(Byte value1, Byte value2) {
            addCriterion("is_inner not between", value1, value2, "isInner");
            return (Criteria) this;
        }

        public Criteria andValuesIsNull() {
            addCriterion("`values` is null");
            return (Criteria) this;
        }

        public Criteria andValuesIsNotNull() {
            addCriterion("`values` is not null");
            return (Criteria) this;
        }

        public Criteria andValuesEqualTo(String value) {
            addCriterion("`values` =", value, "values");
            return (Criteria) this;
        }

        public Criteria andValuesNotEqualTo(String value) {
            addCriterion("`values` <>", value, "values");
            return (Criteria) this;
        }

        public Criteria andValuesGreaterThan(String value) {
            addCriterion("`values` >", value, "values");
            return (Criteria) this;
        }

        public Criteria andValuesGreaterThanOrEqualTo(String value) {
            addCriterion("`values` >=", value, "values");
            return (Criteria) this;
        }

        public Criteria andValuesLessThan(String value) {
            addCriterion("`values` <", value, "values");
            return (Criteria) this;
        }

        public Criteria andValuesLessThanOrEqualTo(String value) {
            addCriterion("`values` <=", value, "values");
            return (Criteria) this;
        }

        public Criteria andValuesRegexp(String value) {
            addCriterion("`values` regexp", value, "values");
            return (Criteria) this;
        }

        public Criteria andValuesLike(String value) {
            addCriterion("`values` like", value, "values");
            return (Criteria) this;
        }

        public Criteria andValuesNotLike(String value) {
            addCriterion("`values` not like", value, "values");
            return (Criteria) this;
        }

        public Criteria andValuesIn(List<String> values) {
            addCriterion("`values` in", values, "values");
            return (Criteria) this;
        }

        public Criteria andValuesNotIn(List<String> values) {
            addCriterion("`values` not in", values, "values");
            return (Criteria) this;
        }

        public Criteria andValuesBetween(String value1, String value2) {
            addCriterion("`values` between", value1, value2, "values");
            return (Criteria) this;
        }

        public Criteria andValuesNotBetween(String value1, String value2) {
            addCriterion("`values` not between", value1, value2, "values");
            return (Criteria) this;
        }

        public Criteria andShowSliderIsNull() {
            addCriterion("show_slider is null");
            return (Criteria) this;
        }

        public Criteria andShowSliderIsNotNull() {
            addCriterion("show_slider is not null");
            return (Criteria) this;
        }

        public Criteria andShowSliderEqualTo(Byte value) {
            addCriterion("show_slider =", value, "showSlider");
            return (Criteria) this;
        }

        public Criteria andShowSliderNotEqualTo(Byte value) {
            addCriterion("show_slider <>", value, "showSlider");
            return (Criteria) this;
        }

        public Criteria andShowSliderGreaterThan(Byte value) {
            addCriterion("show_slider >", value, "showSlider");
            return (Criteria) this;
        }

        public Criteria andShowSliderGreaterThanOrEqualTo(Byte value) {
            addCriterion("show_slider >=", value, "showSlider");
            return (Criteria) this;
        }

        public Criteria andShowSliderLessThan(Byte value) {
            addCriterion("show_slider <", value, "showSlider");
            return (Criteria) this;
        }

        public Criteria andShowSliderLessThanOrEqualTo(Byte value) {
            addCriterion("show_slider <=", value, "showSlider");
            return (Criteria) this;
        }

        public Criteria andShowSliderIn(List<Byte> values) {
            addCriterion("show_slider in", values, "showSlider");
            return (Criteria) this;
        }

        public Criteria andShowSliderNotIn(List<Byte> values) {
            addCriterion("show_slider not in", values, "showSlider");
            return (Criteria) this;
        }

        public Criteria andShowSliderBetween(Byte value1, Byte value2) {
            addCriterion("show_slider between", value1, value2, "showSlider");
            return (Criteria) this;
        }

        public Criteria andShowSliderNotBetween(Byte value1, Byte value2) {
            addCriterion("show_slider not between", value1, value2, "showSlider");
            return (Criteria) this;
        }

        public Criteria andFullUrlIsNull() {
            addCriterion("full_url is null");
            return (Criteria) this;
        }

        public Criteria andFullUrlIsNotNull() {
            addCriterion("full_url is not null");
            return (Criteria) this;
        }

        public Criteria andFullUrlEqualTo(String value) {
            addCriterion("full_url =", value, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlNotEqualTo(String value) {
            addCriterion("full_url <>", value, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlGreaterThan(String value) {
            addCriterion("full_url >", value, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlGreaterThanOrEqualTo(String value) {
            addCriterion("full_url >=", value, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlLessThan(String value) {
            addCriterion("full_url <", value, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlLessThanOrEqualTo(String value) {
            addCriterion("full_url <=", value, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlRegexp(String value) {
            addCriterion("full_url regexp", value, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlLike(String value) {
            addCriterion("full_url like", value, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlNotLike(String value) {
            addCriterion("full_url not like", value, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlIn(List<String> values) {
            addCriterion("full_url in", values, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlNotIn(List<String> values) {
            addCriterion("full_url not in", values, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlBetween(String value1, String value2) {
            addCriterion("full_url between", value1, value2, "fullUrl");
            return (Criteria) this;
        }

        public Criteria andFullUrlNotBetween(String value1, String value2) {
            addCriterion("full_url not between", value1, value2, "fullUrl");
            return (Criteria) this;
        }

    }

    public static class CriteriaString {
        @JsonProperty("id")
        @JSONField(name = "id")
        private String id;

        public String getId() {
            return id;
        }
        
        public void setId(String _v) {
            id = _v;
        }

        @JsonProperty("pid")
        @JSONField(name = "pid")
        private String pid;

        public String getPid() {
            return pid;
        }
        
        public void setPid(String _v) {
            pid = _v;
        }

        @JsonProperty("title")
        @JSONField(name = "title")
        private String title;

        public String getTitle() {
            return title;
        }
        
        public void setTitle(String _v) {
            title = _v;
        }

        @JsonProperty("icon")
        @JSONField(name = "icon")
        private String icon;

        public String getIcon() {
            return icon;
        }
        
        public void setIcon(String _v) {
            icon = _v;
        }

        @JsonProperty("url")
        @JSONField(name = "url")
        private String url;

        public String getUrl() {
            return url;
        }
        
        public void setUrl(String _v) {
            url = _v;
        }

        @JsonProperty("file_path")
        @JSONField(name = "file_path")
        private String filePath;

        public String getFilePath() {
            return filePath;
        }
        
        public void setFilePath(String _v) {
            filePath = _v;
        }

        @JsonProperty("params")
        @JSONField(name = "params")
        private String params;

        public String getParams() {
            return params;
        }
        
        public void setParams(String _v) {
            params = _v;
        }

        @JsonProperty("node")
        @JSONField(name = "node")
        private String node;

        public String getNode() {
            return node;
        }
        
        public void setNode(String _v) {
            node = _v;
        }

        @JsonProperty("sort")
        @JSONField(name = "sort")
        private String sort;

        public String getSort() {
            return sort;
        }
        
        public void setSort(String _v) {
            sort = _v;
        }

        @JsonProperty("status")
        @JSONField(name = "status")
        private String status;

        public String getStatus() {
            return status;
        }
        
        public void setStatus(String _v) {
            status = _v;
        }

        @JsonProperty("create_by")
        @JSONField(name = "create_by")
        private String createBy;

        public String getCreateBy() {
            return createBy;
        }
        
        public void setCreateBy(String _v) {
            createBy = _v;
        }

        @JsonProperty("create_at")
        @JSONField(name = "create_at")
        private String createAt;

        public String getCreateAt() {
            return createAt;
        }
        
        public void setCreateAt(String _v) {
            createAt = _v;
        }

        @JsonProperty("is_inner")
        @JSONField(name = "is_inner")
        private String isInner;

        public String getIsInner() {
            return isInner;
        }
        
        public void setIsInner(String _v) {
            isInner = _v;
        }

        @JsonProperty("values")
        @JSONField(name = "values")
        private String values;

        public String getValues() {
            return values;
        }
        
        public void setValues(String _v) {
            values = _v;
        }

        @JsonProperty("show_slider")
        @JSONField(name = "show_slider")
        private String showSlider;

        public String getShowSlider() {
            return showSlider;
        }
        
        public void setShowSlider(String _v) {
            showSlider = _v;
        }

        @JsonProperty("full_url")
        @JSONField(name = "full_url")
        private String fullUrl;

        public String getFullUrl() {
            return fullUrl;
        }
        
        public void setFullUrl(String _v) {
            fullUrl = _v;
        }

    }

    public static class Criteria extends GeneratedCriteria {
        protected Criteria() {
            super();
        }
    }
}
